package functional.closure;

/**
 * @ClassName Closure3
 * @PackageName functional.closure
 * @projectName myThread
 * @Description 
 * @Author games
 * @Date 2025/8/27 下午1:28
 * @Version 1.0
 */

import java.util.function.*;

public class Closure3 {
    IntSupplier makeFun(int x) {

        /**
         * 由 makeFun() 返回的 IntSupplier “关住了” i 和 x，因此即使makeFun()已执行完毕，
         *
         *  当你调用返回的函数时i 和 x仍然有效，而不是像正常情况下那样在 makeFun() 执行后 i 和x就消失了。
         *      但请注意，我没有像 Closure1.java 那样递增 i，因为会产生编译时错误
         *
         */
        int i = 0;
        // x++ 和 i++ 都会报错：
        //return () -> x++ + i++;
        return () -> x + i;

    }

}